import 'package:shared_preferences/shared_preferences.dart';

class TokenManager {
  // 类私有属性
  String? _token;
  // 类私有属性
  final _key = 'enjoy_token';

// 类的私有的静态成员 存储 实例
  static TokenManager? _instance;

  // 类的自定义的命名 构造函数 私有 功能 创建实例
  TokenManager._internal();

  // factory 工厂函数 关键字作用 创建实例的时候提供更多灵活的写法
  // TokenManager 构造函数！！
  factory TokenManager() {
    // 如果_instance有值，什么都不做
    // 如果_instance没有值，执行 TokenManager._internal() 创建实例
    // ??=   把右边的值赋值给左边
    _instance ??= TokenManager._internal();
    return _instance!;
  }

// 初始化持久化方法
  Future<void> init() async {
    final prefs = await SharedPreferences.getInstance();
    _token = prefs.getString(_key);
  }

// 存token
  Future<void> saveToken(String token) async {
    _token = token;
    final prefs = await SharedPreferences.getInstance();
    await prefs.setString(_key, token);
  }

  // 取token
  String? getToken() {
    return _token;
  }

// 删除token
  Future<void> removeToken() async {
    _token = null;
    final prefs = await SharedPreferences.getInstance();
    await prefs.remove(_key);
  }
}
